// 伪代码

function require(file) {
  // 1. 将相对路径转为绝对路径，定位目标文件
  let absolutePath = path.resolve(__dirname, file)
  // 2.缓存检测
  if (caches[absolutePath]) {
    return caches[absolutePath]
  }
  // 3.读取目标文件的代码
  let code = fs.readFileSync(absolutePath).toString();
  let module = {}
  let exports = module.exports = {};
  // 4.将目标文件转为函数
  (function (exports, require, module, __filename, __dirname) {
    const test = {
      name: 'bowl'
    }

    module.exports = test

    console.log(argument.callee.toString());
  })(exports, require, module, __filename, __dirname)
  // 缓存结果
  caches[absolutePath] = module.exports;

  // 返回module.exports 的值
  return module.exports;
}

const m = require('./me.js');